Upon being powered on, a computer starts a startup process (also referred to as “bootstrap” or “boot”). First, an initial program, which is referred to as a BIOS power-on self test (POST) stored in BIOS ROM, is read into the main memory and executed. The initial program is used to diagnose or initialize a boot device.
Subsequently, the BIOS searches for a boot device storing a boot file. The boot file includes an operating system, a device driver, and an application program. As the boot device, normally a hard disk drive (HDD) is used. The BIOS loads the master boot record (MBR), which is stored in the first sector of the HDD, into the main memory and transfers the control to the MBR. The MBR searches for a partition allowed to be booted from the disk, loads a bootstrap loader located in its first sector (boot sector) into the main memory, and then transfers the control to the bootstrap loader. Thereafter, boot files are read into the main memory in sequential order subsequently to the bootstrap loader.
The operating system (OS), which implements preemptive multitasking, implements preemptive task switching also during boot. The OS creates a plurality of processes and threads in order to read a boot file from the HDD during boot. The OS dispatches each process to a processor in a given algorithm. The dispatched process is performed in the processor for a given time slice and then preempted, so that a subsequent process is dispatched. In the latter half of the boot, the number of simultaneously existing processes increases and thus a long seek time occurs in the HDD, thereby lowering the boot performance and causing a delay in boot time.
Although there is a method of storing a single boot image into the HDD and completing the boot in a short time to prevent an occurrence of redundant seek operations, the application of the method is limited to particular OSs. In addition, there is also a method of using a solid state drive (SSD) as the boot device, but the method is limited in the capacity and cost. Further, there is a method of defragging the boot files stored in the HDD to rearrange the boot files in such a way that a seek does not easily occur. Windows™ operating system has a so-called prefetch function in order to reduce the startup time by omitting redundant page faults and seek operations.
This function is to trace booting program operations in the previous and before booting times to check the access statuses of the files in the HDD and then to prefetch a given file in the next and subsequent booting times on the basis of the result. An access log is recorded for each file and stored in a given directory. Each file contains records of access pattern data to the HDD with respect to each program and the file is prefetched into the main memory during boot on the basis of the access log.
U.S. Pat. No. 6,073,232 teaches a technique of prefetching a boot-related program in a prefetch table read from the HDD on startup in order to reduce boot time. The prefetch table stores the location and size of the program and allows prefetch setting using a flag. Japanese Patent Application Publication No. 2007-241927 and Japanese Patent Application Publication No. Sho 64-76314 (1989-76314) each teach a technique of prefetching data including data subsequent to a read request in the case where the size of the read request from the host is equal to or greater than a given value. Japanese Patent Application Publication No. 2001-350669 teaches a technique of determining an amount of data to be cached based on a statistical process. Japanese Patent Application Publication No. 2002-207635 teaches a technique of setting a prefetch amount by comparing a request transfer rate from the host with a data reading rate from an optical disk. U.S. Pat. No. 6,073,232, Japanese Patent Application Publication No. 2007-241927, Japanese Patent Application Publication No. Sho 64-76314 (1989-76314), Japanese Patent Application Publication No. 2001-350669, and Japanese Patent Application Publication No. 2002-207635 are all incorporated by reference here.
Based on the forgoing, there is a need to provide a boot method that reduces boot time over and above the conventional approaches described above.